const sqlite3 = require('sqlite3').verbose();

// 连接到 SQLite 数据库
const db = new sqlite3.Database('pet_mall.db', (err) => {
    if (err) {
        console.error(err.message);
    }
    console.log('Connected to the pet_mall database.');
});

// 创建表
const createTables = () => {
    db.serialize(() => {
        // 用户信息表
        db.run(`
            CREATE TABLE IF NOT EXISTS 用户信息 (
                用户编号 INTEGER PRIMARY KEY AUTOINCREMENT,
                用户名 TEXT NOT NULL,
                密码 TEXT NOT NULL,
                邮箱 TEXT,
                联系电话 TEXT,
                收货地址 TEXT,
                是否为管理员 INTEGER DEFAULT 0
            )
        `);

        // 商品信息表
        db.run(`
            CREATE TABLE IF NOT EXISTS 商品信息 (
                商品编号 INTEGER PRIMARY KEY AUTOINCREMENT,
                商品名称 TEXT NOT NULL,
                商品价格 REAL NOT NULL,
                商品描述 TEXT,
                商品库存 INTEGER NOT NULL,
                商品类别 TEXT,
                商品图片链接 TEXT
            )
        `);

        // 购物车信息表
        db.run(`
            CREATE TABLE IF NOT EXISTS 购物车信息 (
                购物车编号 INTEGER PRIMARY KEY AUTOINCREMENT,
                用户编号 INTEGER,
                商品编号 INTEGER,
                商品数量 INTEGER NOT NULL,
                FOREIGN KEY (用户编号) REFERENCES 用户信息(用户编号),
                FOREIGN KEY (商品编号) REFERENCES 商品信息(商品编号)
            )
        `);

        // 订单信息表
        db.run(`
            CREATE TABLE IF NOT EXISTS 订单信息 (
                订单编号 INTEGER PRIMARY KEY AUTOINCREMENT,
                用户编号 INTEGER,
                订单生成时间 TEXT NOT NULL,
                订单总金额 REAL NOT NULL,
                订单状态 TEXT NOT NULL,
                支付方式 TEXT,
                FOREIGN KEY (用户编号) REFERENCES 用户信息(用户编号)
            )
        `);

        // 订单详情信息表
        db.run(`
            CREATE TABLE IF NOT EXISTS 订单详情信息 (
                订单详情编号 INTEGER PRIMARY KEY AUTOINCREMENT,
                订单编号 INTEGER,
                商品编号 INTEGER,
                商品数量 INTEGER NOT NULL,
                商品单价 REAL NOT NULL,
                FOREIGN KEY (订单编号) REFERENCES 订单信息(订单编号),
                FOREIGN KEY (商品编号) REFERENCES 商品信息(商品编号)
            )
        `);
    });
};

// 插入示例数据
const insertSampleData = () => {
    const sampleUsers = [
        ['user1', 'password123', 'user1@example.com', '13800138001', '北京市朝阳区 XX 路 1 号', 0],
        ['user2', 'abc123', 'user2@example.com', '13900139001', '上海市浦东新区 XX 路 2 号', 0],
        ['admin1', 'adminpass', 'admin1@example.com', '13700137001', '广州市天河区 XX 路 3 号', 1],
        ['user3', 'testpass', 'user3@example.com', '13600136001', '深圳市福田区 XX 路 4 号', 0],
        ['user4', 'pass456', 'user4@example.com', '13500135001', '杭州市西湖区 XX 路 5 号', 0]
    ];

    const sampleProducts = [
        ['宠物狗零食', 29.9, '美味可口的宠物狗零食，多种口味可选', 100, '宠物零食', 'https://example.com/dog_snacks.jpg'],
        ['猫咪猫砂', 39.8, '优质膨润土猫砂，除臭效果好', 80, '宠物用品', 'https://example.com/cat_litter.jpg'],
        ['宠物狗玩具', 19.9, '耐咬的宠物狗玩具，适合各种犬类', 120, '宠物玩具', 'https://example.com/dog_toy.jpg'],
        ['宠物猫抓板', 14.9, '天然材质猫抓板，保护家具', 90, '宠物用品', 'https://example.com/cat_scratcher.jpg'],
        ['宠物营养膏', 49.9, '富含多种维生素和矿物质的宠物营养膏', 60, '宠物保健品', 'https://example.com/pet_nutrition_cream.jpg']
    ];

    const sampleCarts = [
        [1, 1, 2],
        [2, 2, 1],
        [3, 3, 3],
        [4, 4, 2],
        [5, 5, 1]
    ];

    const sampleOrders = [
        [1, '2025-04-15 10:00:00', 59.8, '已支付', '微信支付'],
        [2, '2025-04-16 14:30:00', 39.8, '待发货', '支付宝支付'],
        [3, '2025-04-17 09:15:00', 59.7, '已完成', '银行卡支付'],
        [4, '2025-04-18 16:45:00', 29.8, '待支付', null],
        [5, '2025-04-19 11:20:00', 49.9, '已取消', null]
    ];

    const sampleOrderDetails = [
        [1, 1, 2, 29.9],
        [2, 2, 1, 39.8],
        [3, 3, 3, 19.9],
        [4, 4, 2, 14.9],
        [5, 5, 1, 49.9]
    ];

    const insertUser = db.prepare('INSERT INTO 用户信息 (用户名, 密码, 邮箱, 联系电话, 收货地址, 是否为管理员) VALUES (?,?,?,?,?,?)');
    sampleUsers.forEach(user => insertUser.run(user));
    insertUser.finalize();

    const insertProduct = db.prepare('INSERT INTO 商品信息 (商品名称, 商品价格, 商品描述, 商品库存, 商品类别, 商品图片链接) VALUES (?,?,?,?,?,?)');
    sampleProducts.forEach(product => insertProduct.run(product));
    insertProduct.finalize();

    const insertCart = db.prepare('INSERT INTO 购物车信息 (用户编号, 商品编号, 商品数量) VALUES (?,?,?)');
    sampleCarts.forEach(cart => insertCart.run(cart));
    insertCart.finalize();

    const insertOrder = db.prepare('INSERT INTO 订单信息 (用户编号, 订单生成时间, 订单总金额, 订单状态, 支付方式) VALUES (?,?,?,?,?)');
    sampleOrders.forEach(order => insertOrder.run(order));
    insertOrder.finalize();

    const insertOrderDetail = db.prepare('INSERT INTO 订单详情信息 (订单编号, 商品编号, 商品数量, 商品单价) VALUES (?,?,?,?)');
    sampleOrderDetails.forEach(detail => insertOrderDetail.run(detail));
    insertOrderDetail.finalize();
};

module.exports = {
    db,
    createTables,
    insertSampleData
};